import { CommonProps } from '../common';

export interface CalendarOptions extends CommonProps {
  /**
   * 嵌入
   */
  inline?: boolean;
  /**
   * 第一天从星期几开始
   */
  firstDayOfWeek?: number;
  /**
   * 格式化日期
   */
  format?: string;
  /**
   * 模式
   */
  mode?: 'year' | 'month' | 'day';
}

export interface CalendarCellOptions extends CalendarCell {
  /**
   * 激活
   */
  active?: boolean;
}

export interface CalendarCell extends ControllerOptions {
  /**
   * 用于表示日期单元格属于哪一个月份。值为 0 表示是当前日历显示的月份中的日期，值为 -1 表示是上个月的，值为 1 表示是下个月的（日历展示维度是“月”时有值）
   */
  belongTo?: number;
  /**
   * 日历单元格日期
   */
  date?: Date;
  /**
   * 日期单元格对应的星期，值为 1~7，表示周一到周日。（日历展示维度是“月”时有值）
   */
  day?: number;
  /**
   * 日历单元格日期字符串（输出日期的格式和 format 有关）
   * @default ''
   */
  formattedDate?: string;
  /**
   * 日期单元格是否为当前高亮日期或高亮月份
   */
  isCurrent?: boolean;
  /**
   * 日期在本月的第几周（日历展示维度是“月”时有值）
   */
  weekOrder?: number;
}

export interface ControllerOptions {
  filterDate?: Date | null;
  formattedFilterDate?: string | null;
  mode?: 'year' | 'month' | 'day';
  isShowWeekend?: boolean;
}
